from typing import List, Dict, Tuple

def prompt_extract_meta() -> Tuple[List[str], List[str]]:
    return [
"""
# 角色定义
你是电视台的实习生，负责非常严谨地提取新闻报道中的元数据。你的任务是提取并整理以下信息：

- 稿件标题 (title)
- 稿件日期 (reported_on)，格式：yyyy/MM/dd
- 摄像人员 (cameraman)
- 记者 (reporter)
- 配音 (voiceover)
- 新闻正文内容 (content)

# 提取规则
1. 人名提取：
保留记者、摄像、配音等人员的姓名信息。
如果人名后面带有如“(70%)”、"(1/3)"等附加说明信息，删除该附加信息，仅保留人名。
如果出现“null”或“1”等无效人名，视为没有具体人名，忽略。
2. 稿件日期：
稿件日期（reported_on）统一格式为：yyyy/MM/dd（如：2022/01/26）。
3. 内容提取：
新闻正文（content）中，已在“记者”、“摄像”、“配音”等字段中出现的人员，不再在正文中重复列出。
在正文内容中，保留与新闻相关的文本，去除无关的评论、解释或标注。
4. 输出格式：
- 请确保输出中的字段与示例格式完全一致。**“title”、“reported_on”、“cameraman”、“reporter”、“voiceover”和“content”**是必须的字段。
- 不要在content中重复包含已经在其他字段中提到的人员信息（如记者、摄像、配音等）。
- 在“content”字段中，只保留正文的内容，不要包括元数据中的信息。
- 保证输出格式的清晰性和一致性，确保每条新闻数据都能被正确解析。

# 示例
输入内容：
======
稿件标题：第十五届“江苏职工读书月”活动在常启动
稿件日期：2022年01月26日
记者：许倩 安华梁
摄像：安华梁
配音：母世杰
稿件内容：第十五届“江苏职工读书月”活动在常启动
许倩(1/3) 安华梁 伊宏辉（30%）报道【口播】
1月25日，第十五届“江苏职工读书月”活动在常州启动，以“共建书香社会、共筑辉煌未来”为主题，推动形成多读书。
【同期声】 启动同期声
【正文】
活动由省总工会、省文化和旅游厅、市委宣传部主办，市总工会承办。刘月科在致辞中表示，全省各级工会组织要着重凝心铸魂。
====

输出：
==
{{ "title": "第十五届“江苏职工读书月”活动在常启动", "reported_on": "2022/01/26", "cameraman": ["安华梁"], "reporter": ["许倩", "安华梁", "伊宏辉"], "voiceover": ["母世杰"], "content": "【口播】 \n1月25日，第十五届“江苏职工读书月”活动在常州启动，以“共建书香社会、共筑辉煌未来”为主题，推动形成多读书。\n【同期声】 启动同期声\n【正文】 \n活动由省总工会、省文化和旅游厅、市委宣传部主办，市总工会承办。刘月科在致辞中表示，全省各级工会组织要着重凝心铸魂。\n" }}
==
""",
"*输出内容不需要做任何推理，解释，仅输出JSON文本*"
    ],[]

def prompt_extract_ner_event() -> Tuple[List[str], List[str]]: 
    return [
"""
# 角色定义
请从今天的新闻报道中提取新闻中的相关信息分类及相关描述，包含时间、地点、人物、事件等要素，并生成JSON格式的四元组：

# 四元组输出说明
- head：新闻中涉及的主要话题或事件的类型（例如：重要会议、重大活动等），简洁明了地表述。
- tail：被报道的具体事件、会议或活动名称，不要包含描述、角色等修饰信息。
- description：一句话详细描述该事件或活动的核心内容，涉及名称、地点、人物、事件背景等要素，确保没有遗漏重要信息。
- occurred_on：事件发生的日期。
-- 如果新闻中明确指出了日期，则使用该日期，通常新闻开头可能会指代发生的日期，后续描述的新闻事实除非特别说明，默认都是该日期。
-- 如果新闻提到“昨晚”，而今天的日期是2025/02/05，那么“昨晚”指的是2025/02/04。新闻提到“昨天”，"去年“，”上个月“，”来年“等，可以类似推算。
-- 对于特定节日或纪念日的事件（如“春节前”或“新年”），应推算出具体的日期，如“新年贺词”应标明具体的年份和日期。
-- 日期格式为：yyyy/MM/dd或者yyyy/MM或者yyyy均可，但是不可以为空

# 注意事项
避免指代性名词：请避免使用模糊的指代性名词（如“该活动”、“他参加了”等），在提取时需要明确指出具体的活动名称、地点等。例如：“陈金虎参加了该会议”应提取为“陈金虎参加了‘某次年度会议’”。
细节描述：描述字段应尽可能完整，包括所有相关的职务、角色、参与的活动、地点等，确保新闻要素不遗漏。
实体完整性：不应遗漏任何重要的实体信息。
日期精确性：确保每个提取的四元组都有明确的事件发生日期。对于时间模糊的描述，如“上个月”，请合理推算出准确日期。

# 思考步骤
1. 请先思考本次新闻稿中是否包含有政府、事业单位、国央企组织或者举办重要会议，如果有，则提取不得少于10条记录，如果没有，则可以不提取任何四元组信息
2. 提取不得少于20条记录

# 示例
重要会议：{{'head': '重要会议', 'tail': '市两会', 'description': '市两会于2025年3月召开，代表们将讨论年度经济政策与社会改革措施。', 'occurred_on': '2025/03'}}
""",
"今天的日期为：{reported_on}"
],["reported_on"]

def prompt_extract_ner_lead() -> Tuple[List[str], List[str]]: 
    return [
"""
# 角色定义
你擅长从**今天**的新闻报道中提取新闻中的实体信息、实体之间的关系描述及事件的日期。请特别注意以下几点：

- 实体类型：包括人物姓名、职位、角色、地点、事件名称、活动名称等。
- 关系描述：对实体之间的关系要尽量详细，确保职位、角色等信息不遗漏。
- 事件日期：发生的日期，不可以为空。

# 四元组输出说明
格式：{{'head': xx, 'tail': xx, 'description': zzz, 'occurred_on': 'date'}}
- head：实体类型分类，仅包括国家领导、省部领导、市领导、乡镇村领导、政府机关
- tail：具体被报道对象的名称，不要包含描述、角色等修饰信息
- description：一句话尽可能详细的描述包含head和tail的时间、地点、人物、事件等新闻要素信息
- occurred_on：事件发生的日期。
-- 如果新闻中明确指出了日期，则使用该日期，通常新闻开头可能会指代发生的日期，后续描述的新闻事实除非特别说明，默认都是该日期。
-- 如果新闻提到“昨晚”，而今天的日期是2025/02/05，那么“昨晚”指的是2025/02/04，新闻提到“昨天”，"去年“，”上个月“，”来年“等，可以类似推算。
-- 对于特定节日或纪念日的事件（如“春节前”或“新年”），应推算出具体的日期，如“新年贺词”应标明具体的年份和日期。
-- 日期格式为：yyyy/MM/dd或者yyyy/MM或者yyyy均可，但是不可以为空

# 注意事项
避免指代性名词：请避免使用模糊的指代性名词（如“该活动”、“他参加了”等），在提取时需要明确指出具体的活动名称、地点等。例如：“陈金虎参加了该会议”应提取为“陈金虎参加了‘某次年度会议’”。
细节描述：描述字段应尽可能完整，包括所有相关的职务、角色、参与的活动、地点等，确保新闻要素不遗漏。
实体完整性：不应遗漏任何重要的实体信息，特别是政府官员名字及其职位，*不要编造或者假想*相关职位和名字
日期精确性：确保每个提取的四元组都有明确的事件发生日期。对于时间模糊的描述，如“上个月”，请合理推算出准确日期。
职位变化准确性：领导换届/调离/辞职/违纪等人事变迁，必须要记录下来，不可遗漏。
重大会议决议：领导换届/调离/辞职/违纪等人事变迁，不可忽略任何人物名称及其职位描述。

# 思考步骤
1. 请先思考本次新闻稿中是否包含有国家领导、省部领导、市领导、乡镇村领导、政府机关、人大常委会等，如果有，则提取不得少于20条记录，如果没有，则可以不提取任何四元组信息
2. 以获得的分类信息为'head'，对应的被报道的名称为'tail',生成'description'和推算事件发生的日期（'occurred_on'）
3. 市领导包括：市委书记、副书记、市长、副市长、市委常委、市政府秘书长等角色
4. 党和国家领导人：包括中共中央、国家机构、全国政协的主要领导人。
5. 四套班子：通常是指党委、人大常委会、政府和政协。常州市四套班子领导人通常指市委书记、人大常委会主任、市长、政协主席

# 示例1,head为所属类别
党和国家领导： {{'head': '党和国家领导', 'tail': '习近平', 'description': '2024年12月31日，中华人民共和国国家主席习近平通知，向全国人民发布新年贺词', 'occurred_on': '2024/12/31'}}
省部级领导： {{'head': '省部级领导', 'tail': '信长星', 'description': '2025年1月1日，省委书记信长星在南京会见中国气候变化事务特使刘振民、中国石化集团董事长马永生。', 'occurred_on': '2025/01/01'}}
市领导： {{'head': '市领导', 'tail': '王强', 'description': '王强，市委书记，主持2025年1月5日的市委会议，讨论经济发展计划。', 'occurred_on': '2025/01/05'}}
政府机关： {{'head': '政府机关', 'tail': '常州市政府', 'description': '常州市政府发布新环保政策，2025年1月1日起实施。', 'occurred_on': '2025/01/01'}}
人大常委会： {{'head': '人大常委会', 'tail': '戴士福', 'description': '戴士福【同志】辞去市十七届人大常委会副主任等职务', 'occurred_on': '2025/01/01'}}
人大常委会： {{'head': '人大常委会', 'tail': '舒文', 'description': '选举舒文【同志】担任十七届人大常委会委员', 'occurred_on': '2025/01/01'}}
干部： {{'head': '财政经济委员会', 'tail': '叶明华', 'description': '选举叶明华为财政经济委员会、开发区委员会主任委员', 'occurred_on': '2025/01/01'}}

# 示例2,head为人物名字
如涉及地点（城市、区域等），确保明确提及。如‘北京市市长陈吉宁访问上海’，提取为：
{{'head': '陈吉宁', 'tail': '北京市市长', 'description': '陈吉宁担任北京市市长', 'occurred_on': '2024/12/31'}}
{{'head': '陈吉宁', 'tail': '上海', 'description': '陈吉宁访问上海', 'occurred_on': '2024/12/31'}}
{{'head': '习近平', 'tail': '国家主席习近平', 'description': '2024年12月31日，中华人民共和国国家主席习近平通知，向全国人民发布新年贺词', 'occurred_on': '2024/12/31'}}

# 示例3，head为行政区
行政区：{{'head': '行政区', 'tail': '天宁区', 'description': '常州市天宁区党委书记xx在2025年1月5日的乡镇工作会议上表示，做好今年春节安全保障工作', 'occurred_on': '2025/01/05'}}
""",

"""
#其它说明
- 领导干部人事变动和任免，职位变化做到*不可遗漏，列举全部*
- 领导干部人事变动和任免，一人会担任多个职位角色，做到*不可遗漏，列举全部*
- 重大会议中涉及大量人事任免，仔细思考，提取不得少于20条记录

""",
"今天的日期为：{reported_on}"
], ["reported_on"]

def prompt_extract_ner_extra() -> Tuple[List[str], List[str]]: 
    return [
"""
# 角色定义
你擅长从**当天**的新闻报道中提取新闻中的实体信息、实体之间的关系描述及事件的日期。请特别注意以下几点：

- 实体类型：包括人物姓名、职位、角色、地点、事件名称、活动名称等。
- 关系描述：对实体之间的关系要尽量详细，确保职位、角色等信息不遗漏。
- 事件日期：发生的日期，不可以为空。

# 四元组输出说明
格式：{{'head': xx, 'tail': xx, 'description': zzz, 'occurred_on': 'date'}}
- head：实体类型分类，包括地标景点、重大工程、突发事件、重大事件、行政区
- tail：具体被报道对象的名称，不要包含描述、角色等修饰信息
- description：一句话尽可能详细的描述包含head和tail的时间、地点、人物、事件等新闻要素信息
- occurred_on：事件发生的日期，注意根据今天的日期合理推断事件发生的日期
-- 如果新闻中明确指出了日期，则使用该日期，除非特别说明，通常新闻只会报道当天或者最近1-2天的事件，因此特别注意合理推测事件日期，如果该日期没有特指年份，则根据*今天*的日期来推测年份
-- 如果新闻提到“昨晚”，而今天的日期是2025/01/01，那么“昨晚”指的是2024/12/31，如果新闻提到“昨天”，"去年“，”上个月“，”来年“等，可以类似推算，特别要注意跨年的日期变化。
-- 对于特定节日或纪念日的事件（如“春节前”或“新年”），应推算出具体的日期。
-- 日期格式为：yyyy/MM/dd或者yyyy/MM或者yyyy均可，不可以是空值

# 注意事项
- 请先思考本次新闻稿中是否包含有地标景点、重大工程、重要活动、突发事件、自然灾害、重要节日等信息，如果有，则提取不得少于10条记录，不要输出其它类别信息
- 避免指代性名词：请避免使用模糊的指代性名词（如“该活动”、“他参加了”等），在提取时需要明确指出具体的活动名称、地点等。例如：“陈金虎参加了该会议”应提取为“陈金虎参加了‘某次年度会议’”。
- 细节描述：描述字段应尽可能完整，包括所有相关的职务、角色、参与的活动、地点等，确保新闻要素不遗漏。
- 实体完整性：不应遗漏任何重要的实体信息，特别是领导角色、职位、政府官员名字及其职位。

# 示例
地标景点： {{'head': '地标景点', 'tail': '长城', 'description': '长城成为2025年春节期间最受游客欢迎的景点。', 'occurred_on': '2025'}}
重大工程：{{'head': '重大工程', 'tail': '一带一路', 'description': '2025年1月6日，“一带一路”项目在新疆启动。', 'occurred_on': '2025/01/06'}}
重大事件：{{'head': '重大灾难', 'tail': '汶川地震', 'description': '2008年5月12日，汶川地震造成了巨大损失，政府启动紧急救援，已救出上千人。', 'occurred_on': '2008/05/12'}}
突发事件：{{'head': '公共卫生事件', 'tail': '新冠疫情', 'description': '2020年1月23日，新冠疫情在中国爆发，武汉市全面封锁，采取了严密的防控措施。', 'occurred_on': '2020/01/23'}}
""",

"假设今天的日期为：{reported_on}"
], ["reported_on"]

def prompt_extract_ner() -> Tuple[List[str], List[str]]: 
    return [
"""
# 角色定义
你擅长从**今天**的新闻报道中提取新闻中的实体信息、实体之间的关系描述及事件的日期。请特别注意以下几点：

- 实体类型：包括人物姓名、职位、角色、地点、事件名称、活动名称等。
- 关系描述：对实体之间的关系要尽量详细，确保职位、角色等信息不遗漏。
- 事件日期：发生的日期，不可以为空。

请根据以下规则提取新闻中的四元组，并将其以 JSON 格式输出。
# 四元组输出说明
格式：{{'head': xx, 'tail': xx, 'description': zzz, 'occurred_on': 'date'}}
- head：表示头部实体（通常是人物、组织、机构等）。
- tail：表示尾部实体（通常是与头部实体相关的职位、角色、事件、地点等）。
- description：简短且尽可能详细的描述，包含两个实体之间的关系细节，如人物的职位、角色、参与的活动、事件发生的地点等。避免指代性名词，即如果提到“他参加了该活动”，应明确指出活动的名称。
- occurred_on：事件发生的日期。
-- 如果新闻中明确指出了日期，则使用该日期，通常新闻开头可能会指代发生的日期，后续描述的新闻事实除非特别说明，默认都是该日期。
-- 如果新闻提到“昨晚”，而今天的日期是2025/02/05，那么“昨晚”指的是2025/02/04。“昨天”，"去年“，”上个月“，”来年“等，可以类似推算。
-- 对于特定节日或纪念日的事件（如“春节前”或“新年”），应推算出具体的日期，如“新年贺词”应标明具体的年份和日期。
-- 日期格式为：yyyy/MM/dd或者yyyy/MM或者yyyy均可，但是不可以为空

# 四元组提取原则
- 组织信息：
对于任何组织或公司，确保提取出其名称以及其对应的职务或负责人角色。例如：'常州国际机场经营发展有限公司总经理 顾中元' 提取为：
{{'head': '顾中元', 'tail': '常州国际机场经营发展有限公司', 'description': '顾中元担任常州国际机场经营发展有限公司总经理', 'occurred_on': '{reported_on}'}}

- 活动信息：
在提到人物出席活动时，确保活动名称明确，不使用模糊的“该活动”、“活动”等指代性词汇。如果报道中没有明确指出活动名称，则可以合理推断出相关信息。例如：
如果提到‘市委书记陈金虎参加了某次年度会议’，应提取为：
{{'head': '陈金虎', 'tail': '市委书记', 'description': '陈金虎担任市委书记', 'occurred_on': {reported_on}'}}
{{'head': '陈金虎', 'tail': '某次年度会议', 'description': '陈金虎参加了某次年度会议', 'occurred_on': '{reported_on}'}}

- 地点信息：
如涉及地点（城市、区域等），确保明确提及。如‘北京市市长陈吉宁访问上海’，提取为：
{{'head': '陈吉宁', 'tail': '北京市市长', 'description': '陈吉宁担任北京市市长', 'occurred_on': '{reported_on}'}}
{{'head': '陈吉宁', 'tail': '上海', 'description': '陈吉宁访问上海', 'occurred_on': '{reported_on}'}}

# 注意事项
- 避免指代性名词：请避免使用模糊的指代性名词（如“该活动”、“他参加了”等），在提取时需要明确指出具体的活动名称、地点等。例如：“陈金虎参加了该会议”应提取为“陈金虎参加了‘某次年度会议’”。
- 细节描述：描述字段应尽可能完整，包括所有相关的职务、角色、参与的活动、地点等，确保新闻要素不遗漏。
- 实体完整性：不应遗漏任何重要的实体信息，特别是领导角色、职位、政府官员名字及其职位。
- 提取不得少于20条记录
""",

"今天的日期为：{reported_on}"
    ], ["reported_on"]

def prompt_summarize_news() -> Tuple[List[str], List[str]]:
    return ["""
你是一个专业的信息提取与总结专家。请根据给定的文本内容，按照以下要求进行精确总结：

# 基本要求：
仅提取关键事实信息，不做概念性解释
内容限制在200字以内
确保信息完整、准确、无重复

# 分类信息提取要求：
A. 领导类(市领导，省部级领导，党和国家领导等)：
严格按行政级别排序
必须包含：完整姓名、最重要的职务名称，*必须*简洁准确，不需要展开解释，*不需要*举例，，不需要罗列具体活动或者新闻报道信息。
示例：常州市委领导包括：书记 陈金虎：中共常州市委书记，中国人民解放军江苏省常州军分区党委第一书记。周　伟：中共常州市委副书记，常州市人民政府副市长、代理市长。 季培东：中共常州市委副书记、市委政法委书记。 李文宏：中共常州市委常委。
涉及到任命/选举/辞职等变化，需要保留对应的报道日期和领导的职务变化时间及场合，以备查证。
涉及到同名的领导，请单独标注出来，并附上报道日期和场景
特别注意：领导的任命/离任需要有特别说明。比如：2025年1月1日，陈金虎担任市委书记，仅仅表示2025年1月1日中出现的陈金虎仍然是市委书记的事实，并非当日开始担任该职务。
            
B. 人物类：
必须包含：完整姓名、具体职务，和一句话介绍其核心职责，稍加介绍其工作日常，*必须*简洁准确，不需要罗列具体活动或者新闻报道信息。
示例：xx现任江苏省天合光能董事长兼总经理，负责公司日常运营和管理工作。
涉及到任命/选举/辞职等变化，需要保留对应的报道日期和领导的职务变化时间及场合，以备查证。
涉及到同名的人物，请单独标注出来，并附上报道日期和场景
特别注意：人物角色变化需要有特别说明。比如：2025年1月1日，陈金虎担任开阳集团董事长，仅仅表示2025年1月1日中出现的陈金虎仍然是开阳集团董事长的事实，并非当日开始担任该职务。

C. 地标/景点类：
地理位置（具体到区县级）
建成时间/历史沿革
规模数据（占地面积、建筑面积等）
功能定位与重要性
最新建设进展或改造情况
示例：南京牛首山佛顶宫（2018.11建成），位于江宁区牛首山山顶，总建筑面积7.5万平方米，是展示佛教文化的标志性建筑，2023年接待游客超150万人次

D. 行政区类：
地理位置与行政区划
面积与人口数据（最新普查）
主导产业与经济指标
重点发展方向
最新城市建设成果
示例：江宁区位于南京市东南部，面积1573平方公里，常住人口128万（2020年），形成以智能制造为主导的产业体系，2023年GDP达2800亿元

E. 重点工程类：
项目全称与定位
建设规模与投资额
具体地理位置
建设周期与节点
最新进展情况
示例：南京西站枢纽工程（2021.6开工），总投资385亿元，位于江北新区，占地215公顷，预计2025年建成，目前主体工程完成70%

F. 重要会议类：
会议全称与级别
召开时间与地点
主要参会人员
核心议题内容
形成的重要决议
示例：2024年江苏省两会（2024.1.15-1.19），在南京国际会议中心召开，审议政府工作报告，通过2024年经济社会发展主要目标

G. 重大事件类：
事件名称与性质
发生时间与地点
涉及主体/人员
事件过程与结果
社会影响与后续
示例：南京河西金鹰失火事件（2024.2.1），位于建邺区金鹰世界，因外墙保温材料起火，无人员伤亡，促进全市开展消防安全大检查

H. 产业类：
产业名称与定位
规模（企业数、产值等）
龙头企业/标杆项目
发展态势与成果
最新政策支持
示例：南京智能网联汽车产业（2023年产值850亿），拥有整车企业12家，零部件企业280家，建成全国首个L4级自动驾驶示范区

J. 企业类：
企业名称与定位
社会价值和影响力
规模（企业数、产值等）
发展态势与成果
重要领导出席和重要时刻等
示例：地平线是专注于提供智能驾驶解决方案的智驾科技公司。目前已成为国内率先并最大规模实现车规级智能车载计算方案前装量产的企业。2024年10月24日，地平线正式于香港交易所主板挂牌上市。

其它类别，根据你的理解，自动总结出相关维度信息。

# 输出格式规范：
按重要性或时间顺序组织内容
使用简洁、客观的语言
数据信息需标注具体时间
确保信息逻辑连贯

以下是按照*时间从旧到新*的顺序描述词条*{{keyword}}*的状态，结合*{{keyword}}*所属的类别及其该类别的要求来进行分析。
----
"""], ["keyword"]
